/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package caintra.Sapra.Reportes.Prefactura;

import caintra.Sapra.Model.PrefacturaCaintra;
import caintra.Sapra.Model.PrefacturaDetalle;
import caintra.Sapra.Model.PrefacturaDetalleQM;
import caintra.Sapra.Model.PrefacturaQM;
import java.io.OutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Locale;
import nextapp.echo2.app.ApplicationInstance;
import nextapp.echo2.app.filetransfer.Download;
import nextapp.echo2.app.filetransfer.DownloadProvider;

/**
 *eliud2308
 * @author cobain
 */
public class ReporteExcel {

    public void MenuCSV(List<PrefacturaDetalleQM> lista, final PrefacturaQM pref) {
        List<PrefacturaDetalleQM> m_pract = lista;
        DecimalFormat nf = new DecimalFormat("## ### ###.00");
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MMM-dd", new Locale("es"));
        try {
            //FileWriter nuevo=new FileWriter("/home/cobain/Escritorio/Nuevo.csv");
           FileWriter nuevo = new FileWriter("C:/Users/develop/Documents/DocsSapra/Nuevo.csv");

            nuevo.write(" \nEmpresa: ," + pref.getRazon_empresa());
            nuevo.write(" \nRazon Factura: ," + pref.getRazon_social());
            nuevo.write(" \nPeriodo de:,"+pref.getPeriodo_1()+"a:"+pref.getPeriodo_2());

            String titulo = "\n#,CUENTA,NOMBRE COMPLETO,CCOSTO,FECHA DE INICIO,FECHA DE TERMINO,"
                    + "FECHA CANCELACION,APORTACION MENSUAL,DIAS, A PAGAR 1,AJUSTES 1,DEDUCCIONES 1, QUINCENA 1,"
                    + "A PAGAR 2, AJUSTES 2, DEDUCCIONES 2, QUINCENA 2, MONTO A PAGAR, NETO MENSUAL,"
                    + "SEGURO EMPRESA,SEGURO PRACTICANTE,G. ADMINISTRATIVO,SUBTOTAL,IVA,TOTAL PRACTICANTE";
            
            nuevo.write(titulo);

            String linea="";

            double apm_t=0.00,apg1_t=0.00, aj1_t=0.00, ded1_t=0.00, kin_t1=0.00,apg2_t=0.00, aj2_t=0.00, ded2_t=0.00, kin_t2=0.00,
                    mt=0.00, nm=0.00, se=0.00, sp=0.00, g_a=0.00, zu_t=0.00, iva_t=0.00, tot_p=0.00;

            for (int i = 0; i < lista.size(); i++) {
                PrefacturaDetalleQM p = (PrefacturaDetalleQM) m_pract.get(i);
                linea += "\n" + (i + 1) + ",";
                if (p.getCuenta() == null) {
                    linea += " N/D,";
                } else {
                    linea += "" + p.getCuenta() + ",";
                }
                linea += p.getNombre() + " " + p.getPaterno() + " " + p.getMaterno();

                if (p.getCentro_costo() == null || p.getCentro_costo().trim().equals("")) {
                    linea += " ,N/D,";
                } else {
                    linea += "," + p.getCentro_costo() + ",";
                }

                linea += p.getFec_inicio() + ",";
                linea += p.getFec_termino() + ",";

                if (p.getFec_cancelacion() != null) {
                    linea += p.getFec_cancelacion() + ",";
                } else {
                    linea += "N/D,";
                }
                apm_t+=p.getMonto_beca();
                linea += "" + nf.format(p.getMonto_beca()) + ",";

                linea += "" + p.getDias_a_pagar() + ",";

                apg1_t+=p.getPagar_1();
                linea += "" + nf.format(p.getPagar_1()) + ",";

                aj1_t+=p.getAjustes_1();
                linea += "" + nf.format(p.getAjustes_1()) + ",";

                ded1_t+=p.getDeducciones_1();
                linea += "" + nf.format(p.getDeducciones_1()) + ",";

                kin_t1+=p.getNeto1();
                linea += "" + nf.format(p.getNeto1()) + ",";

                apg2_t+=p.getPagar_2();
                linea += "" + nf.format(p.getPagar_2()) + ",";

                aj2_t+=p.getAjustes_2();
                linea += "" + nf.format(p.getAjustes_2()) + ",";

                ded2_t+=p.getDeducciones_2();
                linea += "" + nf.format(p.getDeducciones_2()) + ",";

                kin_t2+=p.getNeto2();
                linea += "" + nf.format(p.getNeto2()) + ",";

                mt+=p.getMonto_pagar();
                linea += "" + nf.format(p.getMonto_pagar())+ ",";

                nm+=(p.getNeto1() + p.getNeto2());
                linea += "" + nf.format(p.getNeto1() + p.getNeto2())+ ",";

                se+=p.getSeguro_empresa();
                linea += "" + nf.format(p.getSeguro_empresa())+ ",";

                sp+=p.getSeguro_practicante();
                linea += "" + nf.format(p.getSeguro_practicante())+ ",";


                double zubt=p.getMonto_pagar();
                double g_adm=(zubt/100)*pref.getPorcentaje();
                g_a+=g_adm;
                linea += "" + nf.format(g_adm)+ ",";

                double zub_t=zubt+g_adm+p.getSeguro_empresa();
                zu_t+=zub_t;
                linea += "" + nf.format(zub_t)+ ",";

                double iva=(zub_t/100)*(double)pref.getIva_factura();
                iva_t+=iva;
                linea += "" + nf.format(iva)+ ",";


                double total=zub_t+iva;
                tot_p+=total;
                linea += "" + nf.format(total)+ "";

                //nuevo.write(linea);
                ///VARIABLE PARA CALCULAR LA SUMA TOTAL_PRACTICANTE
            }
            //nuevo.write(linea);

            linea+="\n,,,,,,,$"+nf.format(apm_t)+", ,$"+nf.format(apg1_t)+",$"+nf.format(aj1_t)+",$"+nf.format(ded1_t)+",$"+nf.format(kin_t1)+",$"+nf.format(apg2_t)+",$"+nf.format(aj2_t)+",$"+nf.format(ded2_t)+",$"+nf.format(kin_t2)+",$"+nf.format(mt)+
                    ",$"+nf.format(nm)+",$"+nf.format(se)+",$"+nf.format(sp)+",$"+nf.format(g_a)+",$"+nf.format(zu_t)+",$"+nf.format(iva_t)+",$"+nf.format(tot_p);
            nuevo.write(linea);

            //93js92jd9
            nuevo.write("\n");
            nuevo.write("\n");
            nuevo.write("\n");
            nuevo.write("RELACION PREFACTURA\n");
            nuevo.write("  \nConcepto  ,  Monto  ");
            nuevo.write(" \nPago a practicantes , $" + nf.format(pref.getMonto_a_pagar()));
            nuevo.write(" \n" + pref.getPorcentaje() + "% G.A , $ " + nf.format(pref.getGasto_adm()));
            nuevo.write(" \nSubTotal Sin Seguro , $ " + nf.format(pref.getSubtotal_sin_seguro()));
            nuevo.write(" \nSeguro Empresa , $ " + nf.format(pref.getSeguro_empresa()));
            nuevo.write(" \nAdeudos Empresa , $ " + nf.format(pref.getAdeudos_empresa()));
            nuevo.write(" \nSubTotal con Seguro , $ " + nf.format(pref.getSubtotal_conseguro()));
            nuevo.write(" \nI.V.A , $ " + nf.format(pref.getIva_1()));
            nuevo.write(" \nTotal1 , $ " + nf.format(pref.getTotal_1()));
            nuevo.write(" \nAbono Empresa , $ " + nf.format(pref.getAbono_empresa()));
            nuevo.write(" \nSubTotal con Abonos , $ " + nf.format(pref.getSubtotal_con_abono()));
            nuevo.write(" \nI.V.A. , $ " + nf.format((pref.getIva_2())));
            nuevo.write(" \nTotal Final , $ " + nf.format(pref.getTotal_final()));
            nuevo.close();
            //File f=new File("/home/cobain/Escritorio/Nuevo.csv");
            File f = new File("C:/Users/develop/Documents/DocsSapra/Nuevo.csv");
            final byte[] content = new byte[(int) f.length()];
            FileInputStream inputStream = new FileInputStream(f);
            inputStream.read(content);
            inputStream.close();
            final String fname = f.getName();
            Download archivo = new Download();
            archivo.setProvider(new DownloadProvider() {

                public String getContentType() {
                    return ".csv";
                }

                public String getFileName() {
                    return "Prefactura_" + pref.getPeriodo_1() + "a" + pref.getPeriodo_2() + ".csv";
                }

                public int getSize() {
                    return 0;
                }

                public void writeFile(OutputStream out) throws IOException {
                                            out.write(content);}

            });
            f.delete();
            archivo.setActive(true);
            ApplicationInstance app = ApplicationInstance.getActive();
            app.getActive().enqueueCommand(archivo);


        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void imprimir_excel(PrefacturaCaintra fact, List<PrefacturaDetalle> f_detalle){

        DecimalFormat fd = new DecimalFormat("###########0.00");
        iniciarReporte rep=new iniciarReporte();
        try {
            //Writer w=new OutputStreamWriter(new FileOutputStream("C:/Users/Luiz/Desktop/reportes/factura_reporte_per.csv"), "UTF-8");
            Writer w=new OutputStreamWriter(new FileOutputStream("C:/Users/develop/Documents/DocsSapra/factura_reporte_per.csv"), "UTF-8");
            //Writer w=new OutputStreamWriter(new FileOutputStream("/home/cobain/Escritorio/factura_reporte_per.csv"), "UTF-8");
            w.write("Empresa , "+fact.getRazon_Empresa()+"\r\n");
            w.write("Razon Factura , "+fact.getRazon_social()+"\r\n");
            w.write("Periodo , "+fact.getPeriodo()+"\r\n");
            w.write("Usuario , "+fact.getLogin()+"\r\n");
            w.write("#,CUENTA,NETO,NOMBRE PRACTICANTE,CENTRO COSTO,INICIO,TERMINO,CANCELACION,APORTACION MENSUAL,"
                    + "AJUSTES,DEDUCCION,SEGURO EMPRESA,SEGURO PRACTICANTE,DIAS,MONTO A PAGAR,G.ADM.,SUBTOTAL,IVA,TOTAL PRACTICANTE\r\n");

            PrefacturaDetalle dt;
            String linea="";

            double t_ajuste=0.0,t_deduccion=0.0,t_segemp=0.0,t_segprac=0.0,t_montopago=0.0;
            double t_gadm=0.0,t_subtotal=0.0,t_iva=0.0,t_total=0.0,t_neto=0.0;


            for (int i=0;i<f_detalle.size();i++){
                dt=(PrefacturaDetalle)f_detalle.get(i);
                linea+=""+(i+1)+",";
                linea += dt.getCuenta()+",";

                linea += "$ "+fd.format(dt.getNeto())+",";
                t_neto += dt.getNeto();

                linea += dt.getNombre()+" "+dt.getPaterno()+" "+dt.getMaterno()+",";
                linea += dt.getCentrocosto()+",";
                linea += dt.getFec_inicio()+",";
                linea += dt.getFec_termino()+",";
                linea += dt.getFec_baja()+",";
                linea += "$ "+fd.format(dt.getMonto_beca())+",";

                linea += "$ "+fd.format(dt.getAjuste())+",";
                t_ajuste += dt.getAjuste();

                linea += "$ "+fd.format(dt.getDeduccion())+",";
                t_deduccion += dt.getDeduccion();

                linea += "$ "+fd.format(dt.getSeg_emp())+",";
                t_segemp += dt.getSeg_emp();

                linea += "$ "+fd.format(dt.getSeg_pract())+",";
                t_segprac += dt.getSeg_pract();

                linea += dt.getDias_a_pagar()+",";

                linea += "$ "+fd.format(dt.getMonto_pagar())+",";
                t_montopago += dt.getMonto_pagar();

                double gadm=(dt.getMonto_pagar()/100) * fact.getPorcentaje();
                t_gadm+=gadm;
                linea += "$ "+fd.format(gadm)+",";//gasto administrativo

                double subtot=dt.getMonto_pagar()+gadm+dt.getSeg_emp();
                t_subtotal += subtot;
                linea += "$ "+fd.format(subtot)+",";//subtotal

                double iva_p=(subtot/100) * fact.getIva_factura();
                t_iva += iva_p;
                linea += "$ "+fd.format(iva_p)+",";

                double total = subtot + iva_p;
                t_total += total;
                linea += "$ "+fd.format(total)+"\r\n";
            }
            w.write(linea);
            linea=" , ,$ "+fd.format(t_neto)+", , , , , , ,"
                    + "$ "+fd.format(t_ajuste)+",$ "+fd.format(t_deduccion)+",$ "+fd.format(t_segemp)+","
                    + "$ "+fd.format(t_segprac)+", ,$ "+fd.format(t_montopago)+",$ "+fd.format(t_gadm)+""
                    + ",$ "+fd.format(t_subtotal)+",$ "+fd.format(t_iva)+",$ "+fd.format(t_total)+"\r\n\r\n";
            w.write(linea);
            linea ="CONCEPTO , MONTO \r\n";
            linea+="Monto a Pagar , $ "+fd.format(fact.getMonto_a_pagar())+"\r\n";
            linea+=fact.getPorcentaje()+" %  G. Adm. , $ "+fd.format(fact.getGasto_adm())+"\r\n";
            linea+="Subtotal Sin Seguro   , $ "+fd.format(fact.getSubtotal_sin_seguro())+"\r\n";
            linea+="Seguro Empresa , $ "+fd.format(fact.getSeguro_empresa())+"\r\n";
            linea+="Adeudos Empresa , $ "+fd.format(fact.getAdeudos_empresa())+"\r\n";
            linea+="Subtotal Con Seguro , $ "+fd.format(fact.getSubtotal_conseguro())+"\r\n";
            linea+="I.V.A , $ "+fd.format(fact.getIva_1())+"\r\n";
            linea+="Total 1 , $ "+fd.format(fact.getTotal_1())+"\r\n";
            linea+="Abono Empresa , $ "+fd.format(fact.getAbono_empresa())+"\r\n";
            linea+="Subtotal Con Abonos , $ "+fd.format(fact.getSubtotal_con_abono())+"\r\n";
            linea+="I.V.A. , $ "+fd.format(fact.getIva_2())+"\r\n";
            linea+="Total Final , $ "+fd.format(fact.getTotal_final())+"\r\n";
            w.write(linea);
            w.close();
            //File f = new File("C:/Users/Luiz/Desktop/reportes/factura_reporte_per.csv");
            File f = new File("C:/Users/develop/Documents/DocsSapra/factura_reporte_per.csv");
            //File f = new File("/home/cobain/Escritorio/factura_reporte_per.csv");
            rep.descargarArchivo(f);
        } catch (Exception e) {
        }

    }
}
